gtksettings: fix critical warning
authorAlberts Muktupāvels <alberts.muktupavels@gmail.com>
Wed, 3 Feb 2016 13:48:52 +0000 (15:48 +0200)
committerAlberts Muktupāvels <alberts.muktupavels@gmail.com>
Thu, 4 Feb 2016 09:45:50 +0000 (11:45 +0200)
Commit 5186aeb90f52c941a2642b04ebfb54e9d8f8ea11 introduced critical
warning - g_value_copy: assertion 'g_value_type_compatible (...)' failed.

https://bugzilla.gnome.org/show_bug.cgi?id=761381

gtk/gtksettings.c

index 339dfc2ede68db9e0de348c2cf5d6c42ae40d633..7560fa92666884b45aaae2566dd52648a9ae6601 100644 (file)
@@ -3435,16 +3435,20 @@ gtk_settings_reset_property (GtkSettings *settings,
 {
   GtkSettingsPrivate *priv = settings->priv;
   GParamSpec *pspec;
+  GtkRcPropertyParser parser;
   GValue *value;
+  GValue tmp_value = G_VALUE_INIT;
 
   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (settings), name);
 
   g_return_if_fail (pspec != NULL);
 
+  parser = (GtkRcPropertyParser) g_param_spec_get_qdata (pspec, quark_property_parser);
   value = g_param_spec_get_qdata (pspec, g_quark_from_string (name));
 
-  if (value != NULL)
-    g_value_copy (value, &priv->property_values[pspec->param_id - 1].value);
+  g_value_init (&tmp_value, G_PARAM_SPEC_VALUE_TYPE (pspec));
+  if (value && _gtk_settings_parse_convert (parser, value, pspec, &tmp_value))
+    g_value_copy (&tmp_value, &priv->property_values[pspec->param_id - 1].value);
   else
     g_param_value_set_default (pspec, &priv->property_values[pspec->param_id - 1].value);